package com.udi.project.business.base.mapper;

import com.udi.project.business.base.domain.FlCode;
import com.udi.project.system.dept.domain.Dept;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface FlCodeMapper {

    /**
     * 查询分类编码管理数据
     *
     * @param flCode 分类编码信息
     * @return 分类编码信息集合
     */
    public List<FlCode> selectFlCodeList(FlCode flCode);

    /**
     * 根据id查询单行分类编码数据
     * @param Id
     * @return
     */
    FlCode selectflCodeById(Integer Id);

    /**
     * 新增分类编码信息
     *
     * @param flCode 分类编码信息
     * @return 结果
     */
    public int insertFlCode(FlCode flCode);

    /**
     * 修改分类编码信息
     *
     * @param flCode 分类编码信息
     * @return 结果
     */
    public int updateFlcode(FlCode flCode);

    /**
     * 修改子元素关系
     *
     * @param flCodeList 子元素
     * @return 结果
     */
    public int updateFlcodeChildren(@Param("flCodeList") List<FlCode> flCodeList);

    /**
     * 修改所在分类编码的父级分类编码状态
     *
     * @param flCode 分类编码
     */
    public void updateFlcodeStatus(FlCode flCode);


    /**
     * 删除分类编码管理信息
     *
     * @param flId 分类编码ID
     * @return 结果
     */
    public int deleteFlCodeById(Integer flId);


    /**
     * 查询子节点数量
     *
     * @param flCode 信息
     * @return 结果
     */
    public int selectFlCodeCount(FlCode flCode);
    
    /**
     * 根据ID查询所有子分类编码
     *
     * @param flId 分类编码ID
     * @return 分类编码列表
     */
    public List<FlCode> selectChildrenFlcodeById(Integer flId);


    /**
     * 根据ID查询所有子分类编码（正常状态）
     *
     * @param flCode 分类编码ID
     * @return 子分类编码数
     */
    public Integer selectNormalChildrenFlcodeById(FlCode flCode);
    
    /**
     * 校验分类编码名称是否唯一
     *
     * @param flName 分类编码名称
     * @param parentId 父分类编码ID
     * @return 结果
     */
    public FlCode checkflNameUnique(@Param("flName") String flName, @Param("parentId") Integer parentId);
}
